﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace Learn_Array
{
    class Program
    {
        static void Main(string[] args)
        {
            // 二维数组
            {
                int[,] a = new int[5, 2] { { 0, 0 }, { 1, 2 }, { 2, 4 }, { 3, 6 }, { 4, 8 } };

                for (int i = 0; i < 5; i++)
                {
                    for (int j = 0; j < 2; j++)
                    {
                        Console.WriteLine("a[{0},{1}] = {2}", i, j, a[i, j]);
                    }
                }
            }

            // 交错数组
            {
                int[][] scores = new int[5][];
                for (int i = 0; i < 5; i++)
                {
                    scores[i] = new int[i + 1];
                    for (int j = 0; j < i + 1; j++)
                    {
                        scores[i][j] = j;
                    }
                }

                foreach (var item in scores)
                {
                    foreach (var item1 in item)
                    {
                        Console.Write(item1);
                    }
                    Console.WriteLine();
                }
            }

            // Array
            {
                // Array 数组是所有数组的基类在System空间中定义
                int[] arr = new int[] { 1, 2, 3 };
                // Array类的属性
                int length = arr.Length;  // 总个数
                int rank = arr.Rank;  // 维数
                bool fixedSize = arr.IsFixedSize;  // 数组大小是否固定
                bool readOnly = arr.IsReadOnly;   // 数组是否为只读
                bool sync = arr.IsSynchronized;  // 数组是否线程安全
                object synvRoot = arr.SyncRoot;  // 获取用于同步数组访问的对象，通常用于多线程操作
                // Array类的方法
                //Array.Clear(arr, 0, arr.Length);
                //Array.Copy();
                Console.WriteLine(arr.GetLength(0));
                Console.WriteLine();
            }

            // string
            {
                // 拼接
                string fname, lname;
                fname = "Rowan";
                lname = "Atkinson";
                string fullName = fname + lname;
                Console.WriteLine("fullname: {0}", fullName);
                Console.WriteLine();

                // 使用string构造函数
                char[] letters = new char[] { 'H', 'e', 'l', 'l', 'o' };
                string greetings = new string(letters);  // char[] -> string
                Console.WriteLine("Greetings: {0}", greetings);
                Console.WriteLine();

                // 方法返回字符串
                string[] sarray = { "Hello", "From", "Tutorials", "Point" };
                string message = String.Join(" ", sarray);
                Console.WriteLine("Message: {0}", message);
                Console.WriteLine();

                // 用于转换值的格式化方法
                DateTime waiting = new DateTime(2025, 3, 13, 14, 0, 0);
                string chat = String.Format("Message sent at {0:t} on {0:D}", waiting);
                // t & D 是.NET框架为DateTime定义的标准格式说明符，专门用于格式化日期和时间的输出
                Console.WriteLine("Message: {0}", chat);
                Console.WriteLine();
            }   
        }
    }
}
